]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
ScreenShield: bump the lock screen slightly when pressing a key
authorGiovanni Campagna <gcampagna@src.gnome.org>
Fri, 3 Aug 2012 21:31:02 +0000 (23:31 +0200)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Thu, 16 Aug 2012 21:18:02 +0000 (23:18 +0200)
When pressing a key different from escape (one thus that has no
effect), bump the screen up, to indicate that it eats keyboard
input and it must be lifted up.

https://bugzilla.gnome.org/show_bug.cgi?id=681143

js/ui/screenShield.js

index 75ae7b12944f17baa5d56f50a61c027f10ff30df..11cc86adf0b3b2ec4f3942a23a3bd9fe9d4cfb9c 100644 (file)
@@ -23,6 +23,11 @@ const CURTAIN_SLIDE_TIME = 0.8;
 // the slide up automatically
 const ARROW_DRAG_TRESHOLD = 0.1;
 
+// The distance in px that the lock screen will move to when pressing
+// a key that has no effect in the lock screen (bumping it)
+const BUMP_SIZE = 25;
+const BUMP_TIME = 0.3;
+
 const SUMMARY_ICON_SIZE = 48;
 
 // Lightbox fading times
@@ -348,7 +353,12 @@ const ScreenShield = new Lang.Class({
             return true;
         }
 
-        return false;
+        // If the dialog is created, but hasn't received focus yet,
+        // the lock screen could be still focused, so bumping would
+        // make the curtain fall again.
+        if (!this._dialog)
+            this._bumpLockScreen();
+        return true;
     },
 
     _drawArrow: function() {
@@ -433,6 +443,21 @@ const ScreenShield = new Lang.Class({
         this._hideLockScreen(false);
     },
 
+    _bumpLockScreen: function() {
+        Tweener.removeTweens(this._lockScreenGroup);
+        Tweener.addTween(this._lockScreenGroup,
+                         { y: -BUMP_SIZE,
+                           time: BUMP_TIME / 2,
+                           transition: 'easeOutQuad',
+                           onComplete: function() {
+                               Tweener.addTween(this,
+                                                { y: 0,
+                                                  time: BUMP_TIME / 2,
+                                                  transition: 'easeInQuad' });
+                           }
+                         });
+    },
+
     _hideLockScreen: function(animate) {
         if (animate) {
             // Tween the lock screen out of screen